package cn.enjoy.boot.controller;

import cn.enjoy.boot.service.DXCService;
import cn.enjoy.boot.service.impl.DXCServiceImpl;
import lombok.AllArgsConstructor;
import org.springframework.util.ReflectionUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import java.lang.reflect.Method;

/**
 * @author K
 * @date 2022-04-14 17:26
 */
@RestController
@AllArgsConstructor
public class DXCController {

    private final DXCServiceImpl dxcService;


    @PostMapping("/callSum")
    public void callSum() {
        dxcService.callSum();
    }

    @PostMapping("/callSum/reflect")
    public void callReflect() {
        // 参数1：接口类名，可以是接口，也可以是子类
        // 参数2：执行的方法名
        // 参数3：方法参数类型，需要和被执行的方法参数，数量一致，类型一致
        Method method = ReflectionUtils.findMethod(DXCService.class, "callSum", null);
        Object delegate = dxcService;
        Object[] args = null;

        // 参数1：方法
        // 参数2：具体的子类
        // 参数3：参数
        ReflectionUtils.invokeMethod(method, delegate, args);
    }

}
